import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

// 获取所有的 .md 文件
function getMarkdownFiles(dir, fileList = []) {
    const files = fs.readdirSync(dir);
    for (const file of files) {
        const fullPath = path.join(dir, file);
        const stat = fs.statSync(fullPath);
        if (stat.isDirectory()) {
            getMarkdownFiles(fullPath, fileList);
        } else if (file.endsWith('.md')) {
            fileList.push(fullPath);
        }
    }
    return fileList;
}

function processMarkdown(filePath) {
    let content = fs.readFileSync(filePath, 'utf-8');



    const lines = content.split('\n');
    // 删除顶部导航行
    if (lines[0]?.startsWith('[') && lines[0].includes('README.md')) {
        lines.shift(); // 删除第一行
        // 删除分割线 ***
        if (lines[0]?.startsWith('***')) {
            lines.shift();
        }
    }

    const result = [];

    let i = 0;
    while (i < lines.length) {

        // ===== 检查 Parameters 部分 =====
        if (lines[i].startsWith('[SpaceAirGISCesium API]')) {
            lines.shift();
        }
        // ===== 检查 Parameters 部分 =====
        if (lines[i].startsWith('#### Parameters')) {

            i++; // 跳过 '#### Parameters'
            const params = [];

            // 开始收集参数
            while (
                i + 5 < lines.length &&
                lines[i + 1].startsWith('##### ') &&  // 确保是参数行
                lines[i + 3]?.startsWith('`') &&  // 确保下一行是 `type`
                lines[i + 5]?.trim()             // 确保有描述
            ) {
                const name = lines[i + 1].replace('##### ', '').trim();
                const type = lines[i + 3].replace(/`/g, '').trim();
                const desc = lines[i + 5].trim();

                params.push({ name, type, desc });


                i += 6; // 跳过当前参数的三行
            }

            // 插入表格替代原参数块
            result.push('');
            result.push('#### Parameters（参数）');
            result.push('');
            result.push('| 参数名 | 类型 | 描述 |');
            result.push('|--------|------|------|');
            for (const p of params) {
                result.push(`| \`${p.name}\` | \`${p.type}\` | ${p.desc} |`);
            }
            result.push('');

            continue;  // 跳过旧的参数部分，继续处理下一个
        }

        // ===== 检查 Returns 部分 =====
        if (lines[i].startsWith('#### Returns')) {
            const returnType = lines[i + 2]?.replace(/`/g, '').trim();
            const returnDesc = lines[i + 4]?.trim();

            if (returnType && returnDesc) {
                result.push('');
                result.push('#### Returns（返回）');
                result.push('');
                result.push('| 类型 | 描述 |');
                result.push('|------|------|');
                result.push(`| \`${returnType}\` | ${returnDesc} |`);
                result.push('');
                i += 5;
                continue;
            }
        }

        // 默认复制其他内容
        result.push(lines[i]);
        i++;
    }

    fs.writeFileSync(filePath, result.join('\n'), 'utf-8');
    console.log(`✅ Updated: ${filePath}`);
}

const targetDir = path.resolve(__dirname, '../docs/api');
const files = getMarkdownFiles(targetDir);
files.forEach(processMarkdown);